#include <iostream>
#include <stack>
using namespace std;

const int kMaxN = 1e6 + 10;

int a[kMaxN * 2];

long long Solve(int n) {
  long long ret = 0;
  int pos = 0;
  stack<pair<int, int>> s;

  for (int i = 1; i < n; i++) {
    if (a[i] > a[pos]) {
      pos = i;
    }
  }
  for (int i = 0; i <= pos; i++) {
    a[i + n] = a[i];
  }

  s.emplace(a[pos], 1);
  for (int i = 1, j = pos + 1; i < n; i++, j++) {
    for (; s.top().first < a[j]; s.pop()) {
      ret += s.top().second;
    }
    if (s.top().first == a[j]) {
      ret += s.top().second++;
    } else {
      s.emplace(a[j], 1);
    }
    if (s.size() > 1) {
      ret++;
    }
  }

  int maxh = 0, maxp = pos;
  for (int i = 1, j = pos + 1; i < n; i++, j++) {
    if (maxh <= a[j]) {
      maxp = j;
    }
    maxh = max(maxh, a[j]);
  }

  maxh = 0;
  for (int j = pos + n - 1; j > maxp; j--) {
    if (maxh <= a[j]) {
      ret++;
    }
    maxh = max(maxh, a[j]);
  }
  return ret;
}

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  cout << Solve(n) << "\n";
  return 0;
}